package ec.linde.persistencia.entidades.proyectos;

import static javax.persistence.GenerationType.IDENTITY;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.Digits;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import ec.linde.persistencia.entidades.ProdConceptos;
import ec.linde.persistencia.entidades.ProdPartidaDetalle;

/**
 * TODO: Agregar descripcion
 * 
 * @FechaCreacion: 29/09/2014
 * @author: Alex Carrillo
 * @FechaModificacion: 29/09/2014
 * @author: Alex Carrillo
 * @version: 1.0
 */
@Entity
@Table(name = "prod_detalle_plani_contr", schema = "productividad")
public class DetallePlanillaContratista extends EntidadBase {

	private static final long serialVersionUID = 3935545106378163867L;

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "dpct_id", unique = true, nullable = false)
	private int idDetallePlanillaContratista;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "pade_id", nullable = false)
	private ProdPartidaDetalle partida;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "conc_id", nullable = false)
	private ProdConceptos concepto;

	@Column(name = "dpct_costo", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal costo = BigDecimal.ZERO;

	@Column(name = "dpct_cantidad", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal cantidad = BigDecimal.ZERO;

	@Column(name = "dpct_costo_total", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal costoTotal = BigDecimal.ZERO;

	@Column(name = "dpct_cantidad_ant", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal cantidadAnterior = BigDecimal.ZERO;

	@Column(name = "dpct_cantidad_act", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal cantidadActual = BigDecimal.ZERO;

	@Column(name = "dpct_cantidad_total", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal cantidadTotal = BigDecimal.ZERO;

	@Column(name = "dpct_costo_act", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal costoActual = BigDecimal.ZERO;

	@Column(name = "dpct_costo_total_act", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal costoTotalActual = BigDecimal.ZERO;

	@Column(name = "dpct_costo_ant", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal costoAnterior = BigDecimal.ZERO;

	@Column(name = "dpct_total", nullable = false, precision = 12, scale = 6)
	@NotNull
	@Digits(integer = 12, fraction = 2)
	@Min(value = 0)
	private BigDecimal total = BigDecimal.ZERO;

	@Column(name = "dpct_descripcion", nullable = true, length = 200)
	@Size(max = 200)
	private String descripcion;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "plco_id", nullable = true)
	private PlanillaContratista planillaContratista;

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.asinfo.as2.entities.EntidadBase#getId()
	 */
	@Override
	public int getId() {
		return this.idDetallePlanillaContratista;
	}

	public int getIdDetallePlanillaContratista() {
		return idDetallePlanillaContratista;
	}

	public void setIdDetallePlanillaContratista(int idDetallePlanillaContratista) {
		this.idDetallePlanillaContratista = idDetallePlanillaContratista;
	}

	public ProdPartidaDetalle getPartida() {
		return partida;
	}

	public void setPartida(ProdPartidaDetalle partida) {
		this.partida = partida;
	}

	public ProdConceptos getConcepto() {
		return concepto;
	}

	public void setConcepto(ProdConceptos concepto) {
		this.concepto = concepto;
	}

	public BigDecimal getCosto() {
		return costo;
	}

	public void setCosto(BigDecimal costo) {
		this.costo = costo;
	}

	public BigDecimal getCantidad() {
		return cantidad;
	}

	public void setCantidad(BigDecimal cantidad) {
		this.cantidad = cantidad;
	}

	public BigDecimal getCostoTotal() {
		return costoTotal;
	}

	public void setCostoTotal(BigDecimal costoTotal) {
		this.costoTotal = costoTotal;
	}

	public BigDecimal getCantidadAnterior() {
		return cantidadAnterior;
	}

	public void setCantidadAnterior(BigDecimal cantidadAnterior) {
		this.cantidadAnterior = cantidadAnterior;
	}

	public BigDecimal getCantidadActual() {
		return cantidadActual;
	}

	public void setCantidadActual(BigDecimal cantidadActual) {
		this.cantidadActual = cantidadActual;
	}

	public BigDecimal getCantidadTotal() {
		return cantidadTotal;
	}

	public void setCantidadTotal(BigDecimal cantidadTotal) {
		this.cantidadTotal = cantidadTotal;
	}

	public BigDecimal getCostoActual() {
		return costoActual;
	}

	public void setCostoActual(BigDecimal costoActual) {
		this.costoActual = costoActual;
	}

	public BigDecimal getCostoTotalActual() {
		return costoTotalActual;
	}

	public void setCostoTotalActual(BigDecimal costoTotalActual) {
		this.costoTotalActual = costoTotalActual;
	}

	public BigDecimal getCostoAnterior() {
		return costoAnterior;
	}

	public void setCostoAnterior(BigDecimal costoAnterior) {
		this.costoAnterior = costoAnterior;
	}

	public BigDecimal getTotal() {
		return total;
	}

	public void setTotal(BigDecimal total) {
		this.total = total;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public PlanillaContratista getPlanillaContratista() {
		return planillaContratista;
	}

	public void setPlanillaContratista(PlanillaContratista planillaContratista) {
		this.planillaContratista = planillaContratista;
	}

}
